#include "widget.h"

#include <QApplication>
//window frame-窗口框架+windowTitle窗口标题属性(qrc机制)
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
/*
 * window frame 窗口框架 是运行GUI图形化界面程序时，操作系统自带的窗口
 * 可以通过windows api将其去掉或隐藏
 * window frame窗口框架就是窗口的缩小、放大、关闭按钮所在的那一行和此窗口整体的框线，是操作系统自带的
 *
 * 有的API的位置信息是以widget本体(不算window frame)左上角为原点的
 * 有的API的位置信息是以window frame左上角为原点的
 *
 * geometry()、setGeometry()一系列接口是不考虑window frame窗口框架的，是以widget本体左上角来作为原点的
 * 也不会覆盖整个窗口的框线
 *
 * 基于window frame进行位置信息设置和获取
 * frameGeometry()、setFrameGeometry()以window frame窗口框架左上角为原点
 *
*/

/* windowTitle属性-窗口标题
 * windowTitle属性，是从属于QWidget控件的，也就是窗口控件
 * windowTitle属性，只能针对顶层窗口,也就是QWidget控件，才生效
 * 就是，通过QWidget对象来设置windowTitle窗口标题属性才会生效
 * 通过QWidget的子类对象，设置windowTitle窗口标题属性时，此时不设置生效、也不报错
 *
 * 获取窗口标题
 * const QString windowTitle();
 * 设置窗口标题
 * setWindowTitle(const QString);
 *
*/

/*
 * windowlcon窗口图标属性
 * 只能针对顶层窗口,也就是当QWidget控件去设置时，才生效
 *
 * 获取到控件的窗口图标，返回QIcon对象
 * QIcon windowlcon();
 * 设置控件(QWidget)窗口图标
 * setWindowlcon(const QIcon& icon);
 *
 * QIcon类，就是对图标的封装
 *
 * QIcon对象直接定义在栈上就可以
 * Qt的对象一般来说，定义在堆上，是因为要确保当前的控件的生命周期是足够的，要通过Qt对象树来进行释放对象
 * QIcon对象本身比较小，此对象创建出来后，就是要设置到QWidget类里面，
 * QIcon对象本身释放还是不释放，不影响图标的最终显示效果，也就是，提前释放QIcon对象对图标的显示不影响
 *
 * QIcon类也不支持对象树，无法给此对象指定父对象
 *
 * QIcon icon("路径");---定义一个QIcon对象
 * "路径"中建议不要使用中文，要将'\'进行转义。使用'\'字符进行转义
 *
 * C++11引入raw string解决上述需要用'\'字符进行转义特殊字符组合之间的问题
 * 在字符串前加上r即可
 * r("D:\t\d")---这样写即可
 * 也可以直接不使用'\'作为分隔符，使用'/'也可以避免此类问题
 * 图标的图片的路径可以使用相对路径和绝对路径
 * 还可以使用qrc机制
 *
 * qrc机制
 * 原理：给Qt项目中引入一个额外的xml文件，(后缀其实是.qrc文件)，xml文件统称配置文件
 * 在这个xml文件中，把要使用的图片资源导入进去，并且在xml文件中进行记录
 * Qt在编译项目的时候，就会根据这个.qrc文件中描述的图片信息，找到图片资源的内容，并且提取出图片的二进制数据
 * 把这些二进制数据转换成C++代码，最终编译到可执行程序exe中
 *
 * qrc机制对于小的资源文件可以胜任，大一点的资源文件若使用qrc机制，就会变得比较缓慢(加载缓慢)
 *
 * qrc使用方式
 * 1、在项目中创建.qrc文件
 *  1.1、新建一个Qt文件，Qt Resource File
 * 2、把资源文件导入到.qrc文件中
 *  2.1、先创建一个前缀(虚拟的目录，Qt自身抽象出来的)-Add Prefix按钮
 *      qrc机制本质上就是把图片的二进制数据转换成C++代码，最终就会在代码中看到很大的char类型的数组，
 *      里面就是图片的二进制数据。通过虚拟的目录访问这个图片(C++代码)
 *      前缀名称为:/即可
 *  2.2、把图片资源导入到此资源文件中-Add Files按钮
 *      此Add Files按钮在创建前缀之前为禁用状态，创建好前缀之后就为启用状态了，添加的文件就添加到前缀目录下面了
 *      导入资源文件(图片)的时候，需要确保导入的图片所在的位置，必须在与此.qrc文件处于同级目录或者同级目录的子目录中
 *      这样才可以进行导入
 * 使用qrc机制，定义资源对象
 * QIcon icon(":/image.jpg");
 * 当代码中需要访问.qrc文件中管理的文件时，就需要在路径前带上:前缀
 * 即":(前缀)+要访问的资源路径"
 *
 * .qrc文件中导入的资源文件，就会被转换成qrc_resouce.cpp这个C++代码
 * 此qrc_resouce.cpp中的数组，就记录着此资源的二进制数据
 * 当Qt项目进行编译的时候，这个qrc_resouce.cpp文件就会被一起编译到可执行程序中，
 * 当可执行程序运行的时候，上述图片的数据也会被加载到内存中了
 *
*/
